﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using InterfazGrafico.LibreriaConstantes;
using InterfazGrafico.LibreriaConstantes.Elementos;

namespace InterfazGrafico.LibreriaClases.Formularios
{
    /// <summary>
    /// Clase para la gestión de transformaciones condicionales
    /// </summary>
    public partial class FormEstablecerCondicionesTransformaciones : Form
    {
        /// <summary>
        /// Campos de la estructura.
        /// </summary>
        private List<string> Campos = null;

        /// <summary>
        /// Lista de condiciones.
        /// </summary>
        private List<string> Condiciones = null;

        /// <summary>
        /// Campos a los que aplicar las funciones de comparación.
        /// </summary>
        private List<string> CamposCondiciones = null;

        /// <summary>
        /// Parámetros de las funciones de comparación.
        /// </summary>
        private List<List<string>> ParametrosCondiciones = null;

        /// <summary>
        /// Transformaciones a aplicar si se cumple la condición.
        /// </summary>
        private List<string> TransformacionesVerdadero = null;

        /// <summary>
        /// Campos orígenes de las transformaciones si se cumple la condición.
        /// </summary>
        private List<string> CamposOrigenVerdadero = null;

        /// <summary>
        /// Campos destino de las transformaciones si se cumple la condición.
        /// </summary>
        private List<string> CamposDestinoVerdadero = null;

        /// <summary>
        /// Parámetros de las funciones de transformación si se cumple la condición.
        /// </summary>
        private List<List<string>> ParametrosVerdadero = null;

        /// <summary>
        /// Transformaciones a aplicar si no se cumple la condición.
        /// </summary>
        private List<string> TransformacionesFalso = null;

        /// <summary>
        /// Campos orígenes de las transformaciones si se cumple la condición.
        /// </summary>
        private List<string> CamposOrigenFalso = null;

        /// <summary>
        /// Campos destino de las transformaciones si no se cumple la condición.
        /// </summary>
        private List<string> CamposDestinoFalso = null;

        /// <summary>
        /// Parámetros de las funciones de transformación si no se cumple la condición.
        /// </summary>
        private List<List<string>> ParametrosFalso = null;

        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="campos">Campos de la estructura</param>
        /// <param name="condiciones">Lista de condiciones</param>
        /// <param name="camposCondiciones">Campos a los que aplicar las funciones de comparación</param>
        /// <param name="parametrosCondiciones">Parámetros de las funciones de comparación</param>
        /// <param name="transformacionesVerdadero">Transformaciones a aplicar si se cumple la condición</param>
        /// <param name="camposOrigenVerdadero">Campos orígenes de las transformaciones si se cumple la condición</param>
        /// <param name="camposDestinoVerdadero">Campos destino de las transformaciones si se cumple la condición</param>
        /// <param name="parametrosVerdadero">Parámetros de las funciones de transformación si se cumple la condición</param>
        /// <param name="transformacionesFalso">Transformaciones a aplicar si no se cumple la condición</param>
        /// <param name="camposOrigenFalso">Campos orígenes de las transformaciones si se cumple la condición</param>
        /// <param name="camposDestinoFalso">Campos destino de las transformaciones si no se cumple la condición</param>
        /// <param name="parametrosFalso">Parámetros de las funciones de transformación si no se cumple la condición</param>
        public FormEstablecerCondicionesTransformaciones(List<string> campos, List<string> condiciones, List<string> camposCondiciones, List<List<string>> parametrosCondiciones,
            List<string> transformacionesVerdadero, List<string> camposOrigenVerdadero, List<string> camposDestinoVerdadero, List<List<string>> parametrosVerdadero,
            List<string> transformacionesFalso, List<string> camposOrigenFalso, List<string> camposDestinoFalso, List<List<string>> parametrosFalso)
        {
            InitializeComponent();
            this.Campos = campos;
            this.Condiciones = new List<string>();
            this.CamposCondiciones = new List<string>();
            this.ParametrosCondiciones = new List<List<string>>();
            this.TransformacionesVerdadero = new List<string>();
            this.CamposOrigenVerdadero = new List<string>();
            this.CamposDestinoVerdadero = new List<string>();
            this.ParametrosVerdadero = new List<List<string>>();
            this.TransformacionesFalso = new List<string>();
            this.CamposOrigenFalso = new List<string>();
            this.CamposDestinoFalso = new List<string>();
            this.ParametrosFalso = new List<List<string>>();
            int i = 0;
            int j = 0;
            List<string> constantesCondiciones = new CListasFunciones().ListaFuncionesCondicion;
            List<string> constantesTransformaciones = new CListasFunciones().ListaFuncionesTransformacion;
            foreach (string condicion in condiciones)
            {
                if (condicion != null && constantesCondiciones.Contains(condicion))
                {
                    // Condiciones
                    int indice = this.dataGridViewCondiciones.Rows.Add();
                    this.dataGridViewCondiciones[0, indice].Value = j.ToString();
                    
                    this.dataGridViewCondiciones[1, indice].Value = condicion;
                    this.Condiciones.Add(condicion);

                    if (this.Campos.Contains(camposCondiciones[i]))
                    {
                        this.dataGridViewCondiciones[2, indice].Value = camposCondiciones[i];
                        this.CamposCondiciones.Add(camposCondiciones[i]);
                    }
                    else
                    {
                        this.dataGridViewCondiciones[2, indice].Value = string.Empty;
                        this.CamposCondiciones.Add(string.Empty);
                    }

                    if (parametrosCondiciones[i] != null)
                        this.ParametrosCondiciones.Add(parametrosCondiciones[i]);
                    else
                        this.ParametrosCondiciones.Add(new List<string>());

                    // Transformación Verdadero
                    if (constantesTransformaciones.Contains(transformacionesVerdadero[i]))
                    {
                        this.dataGridViewCondiciones[3, indice].Value = transformacionesVerdadero[i];
                        this.TransformacionesVerdadero.Add(transformacionesVerdadero[i]);
                    }
                    else
                    {
                        this.dataGridViewCondiciones[3, indice].Value = string.Empty;
                        this.TransformacionesVerdadero.Add(string.Empty);
                    }

                    if (this.Campos.Contains(camposOrigenVerdadero[i]))
                        this.CamposOrigenVerdadero.Add(camposOrigenVerdadero[i]);
                    else
                        this.CamposOrigenVerdadero.Add(string.Empty);

                    if (this.Campos.Contains(camposDestinoVerdadero[i]))
                        this.CamposDestinoVerdadero.Add(camposDestinoVerdadero[i]);
                    else
                        this.CamposDestinoVerdadero.Add(string.Empty);

                    if (parametrosVerdadero[i] != null)
                        this.ParametrosVerdadero.Add(parametrosVerdadero[i]);
                    else
                        this.ParametrosVerdadero.Add(new List<string>());

                    // Transformación Falso
                    if (constantesTransformaciones.Contains(transformacionesFalso[i]))
                    {
                        this.dataGridViewCondiciones[4, indice].Value = transformacionesFalso[i];
                        this.TransformacionesFalso.Add(transformacionesFalso[i]);
                    }
                    else
                    {
                        this.dataGridViewCondiciones[4, indice].Value = string.Empty;
                        this.TransformacionesFalso.Add(string.Empty);
                    }

                    if (this.Campos.Contains(camposOrigenFalso[i]))
                        this.CamposOrigenFalso.Add(camposOrigenFalso[i]);
                    else
                        this.CamposOrigenFalso.Add(string.Empty);

                    if (this.Campos.Contains(camposDestinoFalso[i]))
                        this.CamposDestinoFalso.Add(camposDestinoFalso[i]);
                    else
                        this.CamposDestinoFalso.Add(string.Empty);

                    if (parametrosFalso[i] != null)
                        this.ParametrosFalso.Add(parametrosFalso[i]);
                    else
                        this.ParametrosFalso.Add(new List<string>());

                    j++;
                }
                i++;
            }
        }

        /// <summary>
        /// Manejador del evento click sobre el botón Eliminar.
        /// </summary>
        /// <param name="sender">Objeto que envía el evento</param>
        /// <param name="e">Parámetros del evento</param>
        void buttonEliminar_Click(object sender, System.EventArgs e)
        {
            if (this.dataGridViewCondiciones.SelectedRows.Count == 0)
            {
                MessageBox.Show(Constantes.MensajeFilaNoSeleccionada, Constantes.MensajeCabeceraAviso, MessageBoxButtons.OK);
                return;
            }
            int indice = int.Parse(this.dataGridViewCondiciones[0, this.dataGridViewCondiciones.SelectedRows[0].Index].Value.ToString());
            this.Condiciones.RemoveAt(indice);
            this.CamposCondiciones.RemoveAt(indice);
            this.ParametrosCondiciones.RemoveAt(indice);
            this.TransformacionesVerdadero.RemoveAt(indice);
            this.CamposOrigenVerdadero.RemoveAt(indice);
            this.CamposDestinoVerdadero.RemoveAt(indice);
            this.ParametrosVerdadero.RemoveAt(indice);
            this.TransformacionesFalso.RemoveAt(indice);
            this.CamposOrigenFalso.RemoveAt(indice);
            this.CamposDestinoFalso.RemoveAt(indice);
            this.ParametrosFalso.RemoveAt(indice);
            this.dataGridViewCondiciones.Rows.RemoveAt(this.dataGridViewCondiciones.SelectedRows[0].Index);
            foreach (DataGridViewRow dr in this.dataGridViewCondiciones.Rows)
            {
                if (indice < int.Parse(dr.Cells[0].Value.ToString()))
                    this.dataGridViewCondiciones[0, dr.Index].Value = int.Parse(dr.Cells[0].Value.ToString()) - 1;
            }
        }

        /// <summary>
        /// Manejador del evento click sobre el botón Modificar.
        /// </summary>
        /// <param name="sender">Objeto que envía el evento</param>
        /// <param name="e">Parámetros del evento</param>
        void buttonModificar_Click(object sender, System.EventArgs e)
        {
            if (this.dataGridViewCondiciones.SelectedRows.Count == 0)
            {
                MessageBox.Show(Constantes.MensajeFilaNoSeleccionada, Constantes.MensajeCabeceraAviso, MessageBoxButtons.OK);
                return;
            }
            int indice = int.Parse(this.dataGridViewCondiciones.Rows[this.dataGridViewCondiciones.SelectedRows[0].Index].Cells[0].Value.ToString());
            string paramCond1 = string.Empty;
            if (this.ParametrosCondiciones[indice].Count > 0)
                paramCond1 = this.ParametrosCondiciones[indice][0];
            string paramCond2 = string.Empty;
            if (this.ParametrosCondiciones[indice].Count > 1)
                paramCond2 = this.ParametrosCondiciones[indice][1];

            string parmVerd1 = string.Empty;
            if (this.ParametrosVerdadero[indice].Count > 0)
                parmVerd1 = this.ParametrosVerdadero[indice][0];
            string parmVerd2 = string.Empty;
            if (this.ParametrosVerdadero[indice].Count > 1)
                parmVerd2 = this.ParametrosVerdadero[indice][1];

            string parmFalso1 = string.Empty;
            if (this.ParametrosFalso[indice].Count > 0)
                parmFalso1 = this.ParametrosFalso[indice][0];
            string parmFalso2 = string.Empty;
            if (this.ParametrosFalso[indice].Count > 1)
                parmFalso2 = this.ParametrosFalso[indice][1];

            FormDetalleCondicion form = new FormDetalleCondicion(this.Condiciones[indice], this.CamposCondiciones[indice],
                paramCond1, paramCond2, this.TransformacionesVerdadero[indice], this.CamposOrigenVerdadero[indice], this.CamposDestinoVerdadero[indice],
                parmVerd1, parmVerd2, this.TransformacionesFalso[indice], this.CamposOrigenFalso[indice], this.CamposDestinoFalso[indice],
                parmFalso1, parmFalso2, this.Campos);
            if (form.ShowDialog() == DialogResult.OK)
            {
                string funcion = string.Empty;
                string campo = string.Empty;
                string parm1 = string.Empty;
                string parm2 = string.Empty;
                form.obtenerCondicion(ref funcion, ref campo, ref parm1, ref parm2);
                this.dataGridViewCondiciones[1, indice].Value = funcion;
                this.dataGridViewCondiciones[2, indice].Value = campo;
                this.Condiciones[indice] = funcion;
                this.CamposCondiciones[indice] = campo;
                if (this.ParametrosCondiciones[indice].Count > 0)
                    this.ParametrosCondiciones[indice][0] = parm1;
                else
                    this.ParametrosCondiciones[indice].Add(parm1);
                
                if (this.ParametrosCondiciones[indice].Count > 1)
                    this.ParametrosCondiciones[indice][1] = parm2;
                else
                    this.ParametrosCondiciones[indice].Add(parm2);

                funcion = string.Empty;
                campo = string.Empty;
                string campoDestino = string.Empty;
                parm1 = string.Empty;
                parm2 = string.Empty;
                form.obtenerTransformacionVerdadero(ref funcion, ref campo, ref campoDestino, ref parm1, ref parm2);
                this.dataGridViewCondiciones[3, indice].Value = funcion;
                this.TransformacionesVerdadero[indice] = funcion;
                this.CamposOrigenVerdadero[indice] = campo;
                this.CamposDestinoVerdadero[indice] = campoDestino;
                if (this.ParametrosVerdadero[indice].Count > 0)
                    this.ParametrosVerdadero[indice][0] = parm1;
                else
                    this.ParametrosVerdadero[indice].Add(parm1);

                if (this.ParametrosVerdadero[indice].Count > 1)
                    this.ParametrosVerdadero[indice][1] = parm2;
                else
                    this.ParametrosVerdadero[indice].Add(parm2);

                funcion = string.Empty;
                campo = string.Empty;
                campoDestino = string.Empty;
                parm1 = string.Empty;
                parm2 = string.Empty;
                form.obtenerTransformacionFalso(ref funcion, ref campo, ref campoDestino, ref parm1, ref parm2);
                this.dataGridViewCondiciones[4, indice].Value = funcion;
                this.TransformacionesFalso[indice] = funcion;
                this.CamposOrigenFalso[indice] = campo;
                this.CamposDestinoFalso[indice] = campoDestino;
                if (this.ParametrosFalso[indice].Count > 0)
                    this.ParametrosFalso[indice][0] = parm1;
                else
                    this.ParametrosFalso[indice].Add(parm1);

                if (this.ParametrosFalso[indice].Count > 1)
                    this.ParametrosFalso[indice][1] = parm2;
                else
                    this.ParametrosFalso[indice].Add(parm2);
            }
        }

        /// <summary>
        /// Manejador del evento click sobre el botón Nuevo.
        /// </summary>
        /// <param name="sender">Objeto que envía el evento</param>
        /// <param name="e">Parámetros del evento</param>
        void buttonNuevo_Click(object sender, System.EventArgs e)
        {
            FormDetalleCondicion form = new FormDetalleCondicion(string.Empty, string.Empty, string.Empty, string.Empty,
                string.Empty, string.Empty, string.Empty, string.Empty, string.Empty,
                string.Empty, string.Empty, string.Empty, string.Empty, string.Empty,
                this.Campos);
            if (form.ShowDialog() == DialogResult.OK)
            {
                int indice = this.dataGridViewCondiciones.Rows.Add();
                this.dataGridViewCondiciones[0, indice].Value = this.Condiciones.Count;

                string funcion = string.Empty;
                string campo = string.Empty;
                string parm1 = string.Empty;
                string parm2 = string.Empty;
                form.obtenerCondicion(ref funcion, ref campo, ref parm1, ref parm2);
                this.dataGridViewCondiciones[1, indice].Value = funcion;
                this.dataGridViewCondiciones[2, indice].Value = campo;
                this.Condiciones.Add(funcion);
                this.CamposCondiciones.Add(campo);
                this.ParametrosCondiciones.Add(new List<string>());
                this.ParametrosCondiciones[this.ParametrosCondiciones.Count - 1].Add(parm1);
                this.ParametrosCondiciones[this.ParametrosCondiciones.Count - 1].Add(parm2);

                funcion = string.Empty;
                campo = string.Empty;
                string campoDestino = string.Empty;
                parm1 = string.Empty;
                parm2 = string.Empty;
                form.obtenerTransformacionVerdadero(ref funcion, ref campo, ref campoDestino, ref parm1, ref parm2);
                this.dataGridViewCondiciones[3, indice].Value = funcion;
                this.TransformacionesVerdadero.Add(funcion);
                this.CamposOrigenVerdadero.Add(campo);
                this.CamposDestinoVerdadero.Add(campoDestino);
                this.ParametrosVerdadero.Add(new List<string>());
                this.ParametrosVerdadero[this.ParametrosVerdadero.Count - 1].Add(parm1);
                this.ParametrosVerdadero[this.ParametrosVerdadero.Count - 1].Add(parm2);

                funcion = string.Empty;
                campo = string.Empty;
                campoDestino = string.Empty;
                parm1 = string.Empty;
                parm2 = string.Empty;
                form.obtenerTransformacionFalso(ref funcion, ref campo, ref campoDestino, ref parm1, ref parm2);
                this.dataGridViewCondiciones[4, indice].Value = funcion;
                this.TransformacionesFalso.Add(funcion);
                this.CamposOrigenFalso.Add(campo);
                this.CamposDestinoFalso.Add(campoDestino);
                this.ParametrosFalso.Add(new List<string>());
                this.ParametrosFalso[this.ParametrosFalso.Count - 1].Add(parm1);
                this.ParametrosFalso[this.ParametrosFalso.Count - 1].Add(parm2);
            }
        }

        /// <summary>
        /// Obtiene los datos de las transformaciones condicionales.
        /// </summary>
        /// <param name="condiciones">Lista de condiciones</param>
        /// <param name="camposCondiciones">Campos a los que aplicar las funciones de comparación</param>
        /// <param name="parametrosCondiciones">Parámetros de las funciones de comparación</param>
        /// <param name="transformacionesVerdadero">Transformaciones a aplicar si se cumple la condición</param>
        /// <param name="camposOrigenVerdadero">Campos orígenes de las transformaciones si se cumple la condición</param>
        /// <param name="camposDestinoVerdadero">Campos destino de las transformaciones si se cumple la condición</param>
        /// <param name="parametrosVerdadero">Parámetros de las funciones de transformación si se cumple la condición</param>
        /// <param name="transformacionesFalso">Transformaciones a aplicar si no se cumple la condición</param>
        /// <param name="camposOrigenFalso">Campos orígenes de las transformaciones si se cumple la condición</param>
        /// <param name="camposDestinoFalso">Campos destino de las transformaciones si no se cumple la condición</param>
        /// <param name="parametrosFalso">Parámetros de las funciones de transformación si no se cumple la condición</param>
        public void obtenerValores(List<string> condiciones, List<string> camposCondiciones, List<List<string>> parametrosCondiciones,
            List<string> transformacionesVerdadero, List<string> camposOrigenVerdadero, List<string> camposDestinoVerdadero, List<List<string>> parametrosVerdadero,
            List<string> transformacionesFalso, List<string> camposOrigenFalso, List<string> camposDestinoFalso, List<List<string>> parametrosFalso)
        {
            condiciones.Clear();
            camposCondiciones.Clear();
            parametrosCondiciones.Clear();
            transformacionesVerdadero.Clear();
            camposOrigenVerdadero.Clear();
            camposDestinoVerdadero.Clear();
            parametrosVerdadero.Clear();
            transformacionesFalso.Clear();
            camposOrigenFalso.Clear();
            camposDestinoFalso.Clear();
            parametrosFalso.Clear();

            foreach (DataGridViewRow dr in this.dataGridViewCondiciones.Rows)
            { 
                int indice = int.Parse(dr.Cells[0].Value.ToString());
                condiciones.Add(this.Condiciones[indice]);
                camposCondiciones.Add(this.CamposCondiciones[indice]);
                parametrosCondiciones.Add(new List<string>(this.ParametrosCondiciones[indice]));
                transformacionesVerdadero.Add(this.TransformacionesVerdadero[indice]);
                camposOrigenVerdadero.Add(this.CamposOrigenVerdadero[indice]);
                camposDestinoVerdadero.Add(this.CamposDestinoVerdadero[indice]);
                parametrosVerdadero.Add(new List<string>(this.ParametrosVerdadero[indice]));
                transformacionesFalso.Add(this.TransformacionesFalso[indice]);
                camposOrigenFalso.Add(this.CamposOrigenFalso[indice]);
                camposDestinoFalso.Add(this.CamposDestinoFalso[indice]);
                parametrosFalso.Add(new List<string>(this.ParametrosFalso[indice]));
            }
        }

        /// <summary>
        /// Manejador del evento click sobre el botón Subir.
        /// </summary>
        /// <param name="sender">Objeto que envía el evento</param>
        /// <param name="e">Parámetros del evento</param>
        void buttonSubir_Click(object sender, System.EventArgs e)
        {
            if (this.dataGridViewCondiciones.SelectedRows.Count == 0)
            {
                MessageBox.Show(Constantes.MensajeFilaNoSeleccionada, Constantes.MensajeCabeceraAviso, MessageBoxButtons.OK);
                return;
            }
            if (this.dataGridViewCondiciones.Rows.Count > 1 &&
                this.dataGridViewCondiciones.SelectedRows[0].Index != 0)
            {
                int indiceSeleccionado = this.dataGridViewCondiciones.SelectedRows[0].Index;
                object indSeleccionado = this.dataGridViewCondiciones[0, indiceSeleccionado].Value;
                object condSeleccionada = this.dataGridViewCondiciones[1, indiceSeleccionado].Value;
                object campoCondSeleccionada = this.dataGridViewCondiciones[2, indiceSeleccionado].Value;
                object trans1Seleccionada = this.dataGridViewCondiciones[3, indiceSeleccionado].Value;
                object trans2Seleccionada = this.dataGridViewCondiciones[4, indiceSeleccionado].Value;
                this.dataGridViewCondiciones[0, indiceSeleccionado].Value = this.dataGridViewCondiciones[0, indiceSeleccionado - 1].Value;
                this.dataGridViewCondiciones[1, indiceSeleccionado].Value = this.dataGridViewCondiciones[1, indiceSeleccionado - 1].Value;
                this.dataGridViewCondiciones[2, indiceSeleccionado].Value = this.dataGridViewCondiciones[2, indiceSeleccionado - 1].Value;
                this.dataGridViewCondiciones[3, indiceSeleccionado].Value = this.dataGridViewCondiciones[3, indiceSeleccionado - 1].Value;
                this.dataGridViewCondiciones[4, indiceSeleccionado].Value = this.dataGridViewCondiciones[4, indiceSeleccionado - 1].Value;
                this.dataGridViewCondiciones[0, indiceSeleccionado - 1].Value = indSeleccionado;
                this.dataGridViewCondiciones[1, indiceSeleccionado - 1].Value = condSeleccionada;
                this.dataGridViewCondiciones[2, indiceSeleccionado - 1].Value = campoCondSeleccionada;
                this.dataGridViewCondiciones[3, indiceSeleccionado - 1].Value = trans1Seleccionada;
                this.dataGridViewCondiciones[4, indiceSeleccionado - 1].Value = trans2Seleccionada;
                this.dataGridViewCondiciones.Rows[indiceSeleccionado - 1].Selected = true;
            }
        }

        /// <summary>
        /// Manejador del evento click sobre el botón Bajar.
        /// </summary>
        /// <param name="sender">Objeto que envía el evento</param>
        /// <param name="e">Parámetros del evento</param>
        void buttonBajar_Click(object sender, System.EventArgs e)
        {
            if (this.dataGridViewCondiciones.SelectedRows.Count == 0)
            {
                MessageBox.Show(Constantes.MensajeFilaNoSeleccionada, Constantes.MensajeCabeceraAviso, MessageBoxButtons.OK);
                return;
            }
            if (this.dataGridViewCondiciones.Rows.Count > 1 &&
                this.dataGridViewCondiciones.SelectedRows[0].Index != this.dataGridViewCondiciones.Rows.Count - 1)
            {
                int indiceSeleccionado = this.dataGridViewCondiciones.SelectedRows[0].Index;
                object indSeleccionado = this.dataGridViewCondiciones[0, indiceSeleccionado].Value;
                object condSeleccionada = this.dataGridViewCondiciones[1, indiceSeleccionado].Value;
                object campoCondSeleccionada = this.dataGridViewCondiciones[2, indiceSeleccionado].Value;
                object trans1Seleccionada = this.dataGridViewCondiciones[3, indiceSeleccionado].Value;
                object trans2Seleccionada = this.dataGridViewCondiciones[4, indiceSeleccionado].Value;
                this.dataGridViewCondiciones[0, indiceSeleccionado].Value = this.dataGridViewCondiciones[0, indiceSeleccionado + 1].Value;
                this.dataGridViewCondiciones[1, indiceSeleccionado].Value = this.dataGridViewCondiciones[1, indiceSeleccionado + 1].Value;
                this.dataGridViewCondiciones[2, indiceSeleccionado].Value = this.dataGridViewCondiciones[2, indiceSeleccionado + 1].Value;
                this.dataGridViewCondiciones[3, indiceSeleccionado].Value = this.dataGridViewCondiciones[3, indiceSeleccionado + 1].Value;
                this.dataGridViewCondiciones[4, indiceSeleccionado].Value = this.dataGridViewCondiciones[4, indiceSeleccionado + 1].Value;
                this.dataGridViewCondiciones[0, indiceSeleccionado + 1].Value = indSeleccionado;
                this.dataGridViewCondiciones[1, indiceSeleccionado + 1].Value = condSeleccionada;
                this.dataGridViewCondiciones[2, indiceSeleccionado + 1].Value = campoCondSeleccionada;
                this.dataGridViewCondiciones[3, indiceSeleccionado + 1].Value = trans1Seleccionada;
                this.dataGridViewCondiciones[4, indiceSeleccionado + 1].Value = trans2Seleccionada;
                this.dataGridViewCondiciones.Rows[indiceSeleccionado + 1].Selected = true;
            }
        }
    }
} 